package TUILayer;

/**
 *
 * @author (GP3 Project Solutions)
 * @version (07-06-2011 JSM: Oprettelse af klassen)
 */
import ControlLayer.*;
import java.util.Scanner;

public class LeverandoerUI {
    
private Scanner reader;
private LeverandoerRegisterCtrl leverandoerRegisterCtrl;
private int updateChoise = 0;
    
    /**
    * Konstruktør for klassen LeverandoerUI
    */
    public LeverandoerUI()
    {
        reader = new Scanner(System.in);
        leverandoerRegisterCtrl = new LeverandoerRegisterCtrl();
    }
    
    /**
    * Kalder metode, der starter menuen for leverandøer
    */
    public void start()
    {
        leverandoerMenu();
    }
    
    /**
     * Kalder menuen for leverandører og kalder valgt metode
     */
    public void leverandoerMenu()
    {
       boolean exit = false;
       while(!exit)
       {
          int choise = udskrivLeverandoerMenu(); 
          switch (choise)
          {   
              case 1: opretLeverandoer();
                      break;
              case 2: findLeverandoer();
                      break;
              case 3: opdaterMenu();
                      break;
              case 4: udskrivAlleLeverandoer();
                      break;
              default: exit = true;
                      break;
          }
       }
    }
    
    /**
     * Genererer leverandørmenuen
     */
    public int udskrivLeverandoerMenu()
    {    
            System.out.println(" *** Leverandør Menu ***");
            System.out.println(" (1) Opret Leverandør");
            System.out.println(" (2) Find Leverandør");
            System.out.println(" (3) Opdater Leverandørinfo");
            System.out.println(" (4) Udskriv alle Leverandører");
            System.out.println(" (5) HovedMenu");
            System.out.print("\n Foretag valg: ");
            
            int choise = reader.nextInt();
            //System.out.println("\f");
            return choise;
    }
    
    /**
     * Kalder menu for opdatering af leverandørdata
     */
    public void opdaterMenu()
    {
       boolean exit = false;
       while(!exit)
       {
          updateChoise = udskrivOpdaterLeverandoerMenu(); 
          if(updateChoise != 6)
          {
                opdaterLeverandoer(); 
          }
          else
          {
            exit = true;
            //System.out.println("\f");
          }
       }
    }
    
    /**
     * Genererer menu for opdatering af leverandørdata
     */
    public int udskrivOpdaterLeverandoerMenu()
    {      
            System.out.println(" *** Opdater Leverandør Menu ***");
            System.out.println(" (1) Opdater navn");
            System.out.println(" (2) Opdater adresse");
            System.out.println(" (3) Opdater telefon");
            System.out.println(" (4) Opdater email");
            System.out.println(" (5) Opdater alle data");
            System.out.println(" (6) Retur");
            System.out.print("\n Foretag valg: ");
            
            updateChoise = reader.nextInt();
            return updateChoise;
     }
    
    /**
     * Metoden indlæser en leverandørs id og returnerer id
     * @return id Leverandørens id
     */
    public int inputLeverandoerId()
    {   
        boolean ok = false;
        int id = 0;
        while(!ok)
        {
           System.out.println(" Skriv leverandørens id:  ");
           try{
             id = reader.nextInt();
             ok = true;
           }
           catch (Exception e)
            {
             System.out.println("Der skal indtastes et tal -  prøv igen");
             String input = reader.nextLine();
           }
        }
        return id;
    }
    
    /**
     * Metoden indlæser en leverandørs navn og returnerer navnet
     * @return name Leverandørens navn
     */
    public String inputLeverandoerNavn()
    {
        System.out.println(" Skriv leverandørens navn: ");
        String name = reader.nextLine();
        name = reader.nextLine();
        return name;
    }
    
    /**
     * Metoden indlæser en Leverandørs adresse og returnerer adressen
     * @return adresse Leverandørens adresse
     */
    public String inputLeverandoerAdresse()
    {
        System.out.println(" Skriv leverandørens adresse: ");
        String adresse = reader.next();
        return adresse;
    }
    
    /**
     * Metoden indlæser en leverandørs telefonnummer og returnerer telefonnummer
     * @return tlf Leverandørens telefonnummer
     */
    public int inputTlf()
    {   
        boolean ok = false;
        int tlf = 0;
        while(!ok)
        {
           System.out.println(" Skriv tlf:  ");
           try{
             tlf = reader.nextInt();
             ok = true;
           }
           catch (Exception e)
            {
             System.out.println("Der skal indtastes et tal -  prøv igen");
             String input = reader.nextLine();
           }
        }
        return tlf;
    }
    
    /**
     * Metoden indlæser en leverandørs email og returnerer email
     * @return email Leverandørens email
     */
    public String inputLeverandoerEmail()
    {
        System.out.println(" Skriv leverandørens email: ");
        String email = reader.nextLine();
        email = reader.nextLine();
        return email;
    }
    
    /**
     * Metoden kalder opretLeverandoer i controlleren
     * med brugerspecificerede parametre
     * 
     */
    public void opretLeverandoer()
    {
        int leverandoerId = inputLeverandoerId();
        String leverandoerNavn = inputLeverandoerNavn();
        String adresse = inputLeverandoerAdresse();
        int tlf = inputTlf();
        String email = inputLeverandoerEmail();
        
        leverandoerRegisterCtrl.opretLeverandoer(leverandoerId, leverandoerNavn, adresse, tlf, email);
    }
    
    /**
     * Metoden kalder findLeverandoer i controlleren 
     * og udskriver leverandørdata
     */
    public void findLeverandoer()
    {
        int leverandoerId = inputLeverandoerId();
        System.out.println(leverandoerRegisterCtrl.findLeverandoer(leverandoerId));
    }

    /**
     * Metoden kalder opretLeverandoer i controlleren
     * med brugerspecificerede parametre
     */
    public void opdaterLeverandoer()
    {
        int id = inputLeverandoerId();
        if(leverandoerRegisterCtrl.findLeverandoer(id) != null)
        {
            String n = leverandoerRegisterCtrl.findLeverandoer(id).hentNavn();
            String adres = leverandoerRegisterCtrl.findLeverandoer(id).hentAdresse();
            int tlf = leverandoerRegisterCtrl.findLeverandoer(id).hentTlf();
            String email = leverandoerRegisterCtrl.findLeverandoer(id).hentEmail();
        
            switch(updateChoise)
            {
                case 1: n = inputLeverandoerNavn();
                        break;
                case 2: adres = inputLeverandoerAdresse();
                        break;
                case 3: tlf = inputTlf();
                        break;
                case 4: email = inputLeverandoerEmail();
                        break;
                case 5: n = inputLeverandoerNavn();
                        adres = inputLeverandoerAdresse();
                        tlf = inputTlf();
                        email = inputLeverandoerEmail();
                        break;
             }
             leverandoerRegisterCtrl.opdaterLeverandoer(id, n, adres, tlf, email);
             
             System.out.println("\f");
       }
       else
       {
            System.out.println("Ingen leverandør fundet!");
       }
    }
    
    /**
     * Metoden kalder udskrivAlleLeverandoer i controlleren
     * og udskiver leverandørdata
     */
    public void udskrivAlleLeverandoer()
    {
        System.out.println(leverandoerRegisterCtrl.udskrivAlleLeverandoer());
    }
}